import { _decorator, Button, Label, Sprite, EventHandler, Component } from 'cc';
import { BaseWindow } from '../../core/runtime/UIFramework';
import { GameFramework } from '../../core/runtime/base/GameFramework';


const { ccclass, property } = _decorator;

@ccclass('MainMenuView')
export class MainMenuView extends BaseWindow {
    @property(Button)
    private startGameBtn: Button | null = null;

    @property(Button)
    private settingBtn: Button | null = null;

    @property(Button)
    private rankBtn: Button | null = null;

    @property(Button)
    private activityBtn: Button | null = null;

    @property(Button)
    private noticeBtn: Button | null = null;

    @property(Button)
    private moreGameBtn: Button | null = null;

    @property(Label)
    private versionLab: Label | null = null;

    @property(Sprite)
    private bgSpr: Sprite | null = null;

    @property(Label)
    private gameNameLab: Label | null = null;

    init(): void {
        this._uiName = "MainMenuView";
    }

    onOpen(data?: any): void {
        super.onOpen(data);
        this.initUI();
        this.addEventListeners();
    }

    onClose(): void {
        super.onClose();
        this.removeEventListeners();
    }

    private initUI(): void {
        // 初始化版本号
        if (this.versionLab) {
            this.versionLab.string = "v1.0.0"; // 可以从配置中获取实际版本号
        }

        // 初始化游戏名称
        if (this.gameNameLab) {
            this.gameNameLab.string = "我的游戏"; // 可以从配置中获取实际游戏名称
        }

        // 初始化按钮状态（根据游戏状态或用户数据）
        this.updateButtonStates();
    }

    private addEventListeners(): void {
        // 为按钮添加点击事件
        if (this.startGameBtn) {
            this.startGameBtn.node.on(Button.EventType.CLICK, this.onStartGameBtnClick, this);
        }

        if (this.settingBtn) {
            this.settingBtn.node.on(Button.EventType.CLICK, this.onSettingBtnClick, this);
        }

        if (this.rankBtn) {
            this.rankBtn.node.on(Button.EventType.CLICK, this.onRankBtnClick, this);
        }

        if (this.activityBtn) {
            this.activityBtn.node.on(Button.EventType.CLICK, this.onActivityBtnClick, this);
        }

        if (this.noticeBtn) {
            this.noticeBtn.node.on(Button.EventType.CLICK, this.onNoticeBtnClick, this);
        }

        if (this.moreGameBtn) {
            this.moreGameBtn.node.on(Button.EventType.CLICK, this.onMoreGameBtnClick, this);
        }
    }

    private removeEventListeners(): void {
        // 移除按钮点击事件
        if (this.startGameBtn) {
            this.startGameBtn.node.off(Button.EventType.CLICK, this.onStartGameBtnClick, this);
        }

        if (this.settingBtn) {
            this.settingBtn.node.off(Button.EventType.CLICK, this.onSettingBtnClick, this);
        }

        if (this.rankBtn) {
            this.rankBtn.node.off(Button.EventType.CLICK, this.onRankBtnClick, this);
        }

        if (this.activityBtn) {
            this.activityBtn.node.off(Button.EventType.CLICK, this.onActivityBtnClick, this);
        }

        if (this.noticeBtn) {
            this.noticeBtn.node.off(Button.EventType.CLICK, this.onNoticeBtnClick, this);
        }

        if (this.moreGameBtn) {
            this.moreGameBtn.node.off(Button.EventType.CLICK, this.onMoreGameBtnClick, this);
        }
    }

    private updateButtonStates(): void {
        // 根据游戏状态或用户数据更新按钮状态
        // 例如：活动按钮可能只在特定时间开放
        if (this.activityBtn) {
            // this.activityBtn.interactable = this.isActivityAvailable();
        }

        // 例如：根据用户等级解锁功能
        if (this.rankBtn) {
            // this.rankBtn.interactable = this.isRankAvailable();
        }
    }

    /**
     * 开始游戏按钮点击事件
     */
    private onStartGameBtnClick(): void {



        GameFramework.ui.showToast("开始游戏按钮被点击");
        
        return;

    }

    /**
     * 设置按钮点击事件
     */
    private onSettingBtnClick(): void {


        GameFramework.ui.showMessage("设置", "游戏设置", () => {
            console.log("点击了确定");
        }, () => {
            console.log("点击了取消");
        });

        return;

        console.log("设置按钮被点击");
        
        // 播放按钮音效
        GameFramework.audio.playEffect("sounds/click");
        
        // 打开设置界面
        GameFramework.ui.openWindow("SettingView");
        
        // 发送事件通知
        GameFramework.event.emit("MAIN_MENU_OPEN_SETTING");
    }

    /**
     * 排行榜按钮点击事件
     */
    private onRankBtnClick(): void {


        // GameFramework.ui.showConfirm();

        console.log("排行榜按钮被点击");
        
        // 播放按钮音效
        GameFramework.audio.playEffect("sounds/click");
        
        // 检查网络连接
        if (!GameFramework.network.isConnected()) {
            GameFramework.ui.showToast("网络不可用，请检查网络连接");
            return;
        }
        
        // 打开排行榜界面
        GameFramework.ui.openWindow("RankView");
        
        // 发送事件通知
        GameFramework.event.emit("MAIN_MENU_OPEN_RANK");
    }

    /**
     * 活动按钮点击事件
     */
    private onActivityBtnClick(): void {
        console.log("活动按钮被点击");
        
        // 播放按钮音效
        GameFramework.audio.playEffect("sounds/click");
        
        // 检查网络连接
        if (!GameFramework.network.isConnected()) {
            GameFramework.ui.showToast("网络不可用，请检查网络连接");
            return;
        }
        
        // 打开活动界面
        GameFramework.ui.openWindow("ActivityView");
        
        // 发送事件通知
        GameFramework.event.emit("MAIN_MENU_OPEN_ACTIVITY");
    }

    /**
     * 公告按钮点击事件
     */
    private onNoticeBtnClick(): void {
        console.log("公告按钮被点击");
        
        // 播放按钮音效
        GameFramework.audio.playEffect("sounds/click");
        
        // 检查网络连接
        if (!GameFramework.network.isConnected()) {
            GameFramework.ui.showToast("网络不可用，请检查网络连接");
            return;
        }
        
        // 打开公告界面
        GameFramework.ui.openWindow("NoticeView");
        
        // 发送事件通知
        GameFramework.event.emit("MAIN_MENU_OPEN_NOTICE");
    }

    /**
     * 更多游戏按钮点击事件
     */
    private onMoreGameBtnClick(): void {
        console.log("更多游戏按钮被点击");
        
        // 播放按钮音效
        GameFramework.audio.playEffect("sounds/click");
        
        // 检查网络连接
        if (!GameFramework.network.isConnected()) {
            GameFramework.ui.showToast("网络不可用，请检查网络连接");
            return;
        }
        
        // 打开更多游戏界面或跳转到应用商店
        GameFramework.ui.openWindow("MoreGameView");
        
        // 发送事件通知
        GameFramework.event.emit("MAIN_MENU_OPEN_MORE_GAME");
    }

    /**
     * 更新用户信息显示
     */
    public updateUserInfo(): void {
        // 更新用户名、等级、金币等信息
        // 这里可以根据实际需求实现
    }

    /**
     * 更新游戏数据
     */
    public updateGameData(): void {
        // 更新游戏相关的数据展示
        // 如最高分、通关记录等
    }

    /**
     * 播放主菜单背景音乐
     */
    public playBackgroundMusic(): void {
        // 播放主菜单背景音乐
        GameFramework.audio.playMusic("musics/main_menu", true);
    }

    /**
     * 停止背景音乐
     */
    public stopBackgroundMusic(): void {
        GameFramework.audio.stopMusic();
    }
}